home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2007 December / PCWKCD1207B.iso / Blogowanie poza sfera / Flock 0.9.1.3 stable / flock-0.9.1.3.en-US.win32.exe / flock / yahootoolbar.xpi / components / nsYahooHashtable.js < prev    next >
Text File  |  2007-01-12  |  4KB  |  140 lines

  1. /*
  2.  * Copyright 2005 - 2006 Yahoo! Inc. All rights reserved.
  3.  */
  4. function nsIYahooHashtable(){
  5.     this.values = {};
  6.     this.keys = []; 
  7.     this.add = function(key, value){
  8.         if(this.values == null){
  9.             this.keys = new Array();
  10.             this.values = new Array();
  11.         }
  12.         this.values[key] = value;
  13.         this.keys[this.keys.length] = key;
  14.     }
  15.     this.addString = function(key, value){
  16.         if(this.values == null){
  17.             this.keys = new Array();
  18.             this.values = new Array();
  19.         }
  20.         this.values[key] = value;
  21.         this.keys[this.keys.length] = key;
  22.     }
  23.     this.clear = function(){
  24.         if(this.values != null){
  25.             for(var i = 0; i < this.values.length; i++){
  26.                 if(this.values[i] instanceof Components.interfaces.nsIYahooFeedNode){
  27.                     this.values[i].destroy();
  28.                 }
  29.                 this.values[i] = null;
  30.                 this.keys[i] = null;
  31.             }
  32.         }
  33.         this.keys = null;
  34.         this.values = null;
  35.     }
  36.     this.get = function(key){
  37.         if(this.values != null && typeof(this.values[key]) != 'undefined'){
  38.             return this.values[key];
  39.         }
  40.         return null;
  41.     }
  42.     this.getString = function(key){
  43.         if(this.values != null && typeof(this.values[key]) == "string"){
  44.             return this.values[key];
  45.         }
  46.         return null;
  47.     }
  48.     this.getKeys = function(count){
  49.         count.value = 0;
  50.         if(this.keys != null){
  51.             count.value = this.keys.length;
  52.             return this.keys;
  53.         }
  54.         else{
  55.             return [];
  56.         }
  57.     }
  58.     this.getValues = function(count){
  59.         var out = new Array();
  60.         var i = 0
  61.         if(this.values != null){
  62.             for(props in this.values){
  63.                 i++
  64.                 out[out.length] = this.values[props];
  65.             }
  66.         }
  67.         count.value = i;
  68.         return out;
  69.     }
  70.     this.getStringValues = function(count){
  71.         var out = new Array();
  72.         count.value = 0
  73.         if(this.values != null){
  74.             for(props in this.values){
  75.                 if(typeof(this.values[props]) == "string"){
  76.                     count.value++
  77.                     out[out.length] = this.values[props];
  78.                 }
  79.             }
  80.         }
  81.         return out;
  82.     }
  83.     this.size = function(){
  84.         return ((this.values != null) ? this.values.length : 0);
  85.     }
  86.     this.toString = function(){
  87.         var out = "";
  88.         if(this.values != null){
  89.             for(prop in this.values){
  90.                 if(out != ""){
  91.                     out += "&";
  92.                 }
  93.                 out += prop +" = "+ this.values[prop];
  94.             }
  95.         }
  96.         return out;
  97.     }
  98.     this.debug = function(msg){
  99.         if(typeof(Components.interfaces.nsIDebugLoggerManager) != 'undefined'){
  100.             logMngr = Components.classes["@mozmonkey.com/debuglogger/manager;1"].getService(Components.interfaces.nsIDebugLoggerManager);
  101.             logger = logMngr.registerLogger("yfeedtest");
  102.             logger.log(3, msg);
  103.         }
  104.     }
  105. }
  106. nsIYahooHashtable.prototype = {
  107.     QueryInterface: function (iid) {
  108.         if(!iid.equals(Components.interfaces.nsIYahooHashtable) && !iid.equals(Components.interfaces.nsISupports))
  109.             throw Components.results.NS_ERROR_NO_INTERFACE;
  110.         return this;
  111.     }
  112. };
  113. function NSGetModule(compMgr, fileSpec) { 
  114.     return {
  115.         myCID         : Components.ID("{5398bfe0-de19-444a-b59d-edff8f10b93d}"),
  116.         myProgID     : "@yahoo.com/feed/hashtable;1",
  117.         firstTime    : true,
  118.         registerSelf : function (compMgr, fileSpec, location, type) {
  119.             if (this.firstTime) {
  120.                 this.firstTime = false;
  121.                 throw Components.results.NS_ERROR_FACTORY_REGISTER_AGAIN;
  122.             }
  123.             compMgr = compMgr.QueryInterface(Components.interfaces.nsIComponentRegistrar);
  124.             compMgr.registerFactoryLocation(this.myCID, "Yahoo! Hashtable", this.myProgID, fileSpec, location, type);
  125.         },
  126.         getClassObject : function (compMgr, cid, iid) {
  127.             if (!cid.equals(this.myCID)) throw Components.results.NS_ERROR_NO_INTERFACE;
  128.             if (!iid.equals(Components.interfaces.nsIFactory)) throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
  129.             return this.myFactory;
  130.         },
  131.         myFactory : {
  132.             createInstance : function (outer, iid) {
  133.                 if (outer != null) throw Components.results.NS_ERROR_NO_AGGREGATION;
  134.                 return (new nsIYahooHashtable()).QueryInterface(iid);
  135.             }
  136.         },
  137.         canUnload : function(compMgr) { return true; }
  138.     };
  139. }
  140.